
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.rms.*;
import javax.microedition.lcdui.*;

import Interfaces.MenuInicial;
import Interfaces.PantallaCM;
import Interfaces.PantallaCarta;
import Interfaces.PantallaCombate;
import Interfaces.PantallaFin;
import Interfaces.PantallaJuego;
import Interfaces.PantallaPillz;
import Motor.Juego;
import Motor.ListaCartas;


public class HLW extends MIDlet implements CommandListener{ 
	
	Display display; 
	Command salir;
	public static MenuInicial menu;
	public static PantallaJuego pJ;
	public static PantallaCarta pC;
	public static PantallaPillz pP;
	public static PantallaCombate pCom;
	public static PantallaFin pF;
	public static PantallaCM pCM;
	Juego juego;
	ListaCartas h0,h1,b0,b1;
	public static RecordStore rs,rs1h,rs2h,rs1b,rs2b;
	
	public HLW(){
		// TODO Auto-generated constructor stub 
		display=Display.getDisplay(this);
		
		System.out.println("Phone Memory "+Runtime.getRuntime().totalMemory()+"");
		System.out.println("Free Memory(Phone) "+Runtime.getRuntime().freeMemory()+"");
		
		/*try{
			rs=RecordStore.openRecordStore("/Biblioteca.dhl",false);
			rs1h=RecordStore.openRecordStore("/j1h.dhl",false);
			rs2h=RecordStore.openRecordStore("/j2h.dhl",false);
			rs1b=RecordStore.openRecordStore("/j1b.dhl",false);
			rs2b=RecordStore.openRecordStore("/j2b.dhl",false);
			System.out.println("barajas cargardas");
			//leer ListaCartas y crear juego
			ListaCartas.cargar(rs1h, h0);
			ListaCartas.cargar(rs1b, b0);
			ListaCartas.cargar(rs2h, h1);
			ListaCartas.cargar(rs2b, b1);
			rs.closeRecordStore();
			rs1h.closeRecordStore();
			rs2h.closeRecordStore();
			rs1b.closeRecordStore();
			rs2b.closeRecordStore();
			juego=new Juego(h0,b0,h1,b1);
			System.out.print("cargado e inicializado");
		}catch(RecordStoreException e){*/
			// si existe algun problema a la hora de cargar las bases de datos, creamos todas desde nuevo
		//	try {
		//		rs=RecordStore.openRecordStore("/Biblioteca.dhl",true);
		//		h0=Juego.heroesPrueba();
		//		b0=Juego.barajaPrueba();
				//relleno las bases de datos
		//		System.out.println("almaceno h0 en rs");
		//		h0.almacenar(rs);
		//		System.out.println("almacenado");
		//		System.out.println("almaceno b0 en rs");
		//		b0.almacenar(rs);
		//		System.out.println("almacenado");
		//		rs1h=RecordStore.openRecordStore("/j1h.dhl",true);
		//		System.out.println("almaceno h0 en rs1h");
		//		h0.almacenar(rs1h);
		//		System.out.println("almacenado");
		//		rs1b=RecordStore.openRecordStore("/j1b.dhl",true);
		//		System.out.println("almaceno b0 en rs1b");
		//		b0.almacenar(rs1b);
		//		System.out.println("almacenado");
		//		rs2h=RecordStore.openRecordStore("/j2h.dhl",true);
		//		System.out.println("almaceno h0 en rs2h");
		//		h0.almacenar(rs2h);
		//		System.out.println("almacenado");
		//		rs2b=RecordStore.openRecordStore("/j2b.dhl",true);
		//		System.out.println("almaceno b0 en rs2b");
		//		b0.almacenar(rs2b);
		//		System.out.println("almacenado");
				//CIERRO RECORDSTORE
		//		rs.closeRecordStore();
		//		rs1h.closeRecordStore();
		//		rs2h.closeRecordStore();
		//		rs1b.closeRecordStore();
		//		rs2b.closeRecordStore();
				//inicializo el juego
		//		b1=Juego.barajaPrueba();
		//		h1=Juego.heroesPrueba();
		//		juego=new Juego(b0,h0,b1,h1);
		//	} catch (RecordStoreException e1) {
		//		System.out.println("No se puede crear base de datos");
				//inicializo el juego con valores por defecto
				juego=new Juego();
		//	}			
		//}
		
		menu=new MenuInicial(display,juego);
		pJ=new PantallaJuego(display, juego,0,0);
		pC=new PantallaCarta(display, juego,0,0,2);
		pP=new PantallaPillz(display,juego);
		pCom=new PantallaCombate(display, juego,0,0);
		pF=new PantallaFin(display,juego);
		pCM=new PantallaCM(display,juego);
		menu.setFullScreenMode(true);
		
		//Creamos el comando Salir
		salir=new Command("Salir",Command.EXIT,3);
		
		//A�adimos el comando al canvas y activamos el oyente
		menu.addCommand(salir);
		menu.setCommandListener(this);		
	}

	protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
		// TODO Auto-generated method stub

	}

	protected void pauseApp() {
		// TODO Auto-generated method stub

	}

	protected void startApp() throws MIDletStateChangeException {
		// TODO Auto-generated method stub
		display.setCurrent(menu);
	}
	
	public void commandAction(Command c, Displayable d) {
		// TODO Auto-generated method stub
		//Miramos si nos salimos o mostramos la alerta
		if (c==salir){
			try{
				destroyApp(true);
			}catch(Exception ex){};
			notifyDestroyed();
		}else System.out.println("Otro comando pulsado");
	}

}
